package io.codegeneratetool.web.common;

import java.io.Serializable;

/**
 * 说明：所有的交互操作的标准结果模板
 * 比如 http交互,webservice交互,都必须要有返回值,不能简单返回boolean类型
 * 
 *  通常的,Http请求和webservice返回此类型,以JSON字符串的方式出现
 *  也就是说,不管正确错误,服务器端不抛异常,返回错误消息
 * 
 */
public class ResultTemplate implements Serializable {
 
	private static final long serialVersionUID = -183184734682206657L;

	/**  是否交互成功
	 * 	 注意,这里的交互式  不是指 htpp,webservice请求交互
	 * @see 是指业务交互,异常被包装成错误消息
	 *   所有的交互 断言总是不跑出异常,即: http交互永远是200
	 *   如果在交互中出现其他错误,要避免,容错
	 * 
	 *  
	 *  */
	private boolean success;
	
	/**  错误消息,只有错误(success==false)的时候才会有 */
	private String errorMessage;
	
	/**  错误代号  如: 500   */
	private String errorCode;
	
	/**  返回的数据 */
	private Object data;
	
	/** 附加消息文本, 根据业务的需要,可能会有附加的文字返回  */
	private String message;
	
	public ResultTemplate(){ }
	
	public ResultTemplate(boolean success, String errorMessage,
			String errorCode, Object data) {
		super();
		this.success = success;
		this.errorMessage = errorMessage;
		this.errorCode = errorCode;
		this.data = data;
	}

	
	
	
	/**  
	 * 获取附加消息文本根据业务的需要可能会有附加的文字返回  
	 * @return message 附加消息文本根据业务的需要可能会有附加的文字返回  
	 */
	public String getMessage() {
		return message;
	}

	/**
	 * 设置附加消息文本根据业务的需要可能会有附加的文字返回  
	 * 该方法直接返回result对象,可以链式调用
	 *	@param message 附加消息文本根据业务的需要可能会有附加的文字返回  
	 */
	public ResultTemplate setMessage(String message) {
		this.message = message;
		return this;
	}

	/**
	 * 说明：创建成功结果
	 * @author jiaxf 创建时间2013-1-29下午4:58:39
	 * @param 
	 */
	public static ResultTemplate createSuccessResult(Object data){
		return new   ResultTemplate(true,null,null,data);
	}
	
	/**
	 * 说明：创建成功结果
	 * @author jiaxf 创建时间2013-1-29下午4:58:39
	 * @param 
	 */
	public static ResultTemplate createFailResult(String errorCode , String errorMessage){
		return new   ResultTemplate(false,errorMessage,errorCode,null);
	}
	
	

	/**  
	 * 获取是否交互成功注意这里的交互式不是指htppwebservice请求交互@see是指业务交互异常被包装成错误消息所有的交互断言总是不跑出异常即:http交互永远是200如果在交互中出现其他错误要避免容错  
	 * @return success 是否交互成功注意这里的交互式不是指htppwebservice请求交互@see是指业务交互异常被包装成错误消息所有的交互断言总是不跑出异常即:http交互永远是200如果在交互中出现其他错误要避免容错  
	 */
	public boolean isSuccess() {
		return success;
	}

	/**
	 * 设置是否交互成功注意这里的交互式不是指htppwebservice请求交互@see是指业务交互异常被包装成错误消息所有的交互断言总是不跑出异常即:http交互永远是200如果在交互中出现其他错误要避免容错  
	 *	@param success 是否交互成功注意这里的交互式不是指htppwebservice请求交互@see是指业务交互异常被包装成错误消息所有的交互断言总是不跑出异常即:http交互永远是200如果在交互中出现其他错误要避免容错  
	 */
	public void setSuccess(boolean success) {
		this.success = success;
	}

	/**  
	 * 获取错误消息只有错误(success==false)的时候才会有  
	 * @return errorMessage 错误消息只有错误(success==false)的时候才会有  
	 */
	public String getErrorMessage() {
		return errorMessage;
	}

	/**
	 * 设置错误消息只有错误(success==false)的时候才会有  
	 *	@param errorMessage 错误消息只有错误(success==false)的时候才会有  
	 */
	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

	/**  
	 * 获取错误代号如:500  
	 * @return errorCode 错误代号如:500  
	 */
	public String getErrorCode() {
		return errorCode;
	}

	/**
	 * 设置错误代号如:500  
	 *	@param errorCode 错误代号如:500  
	 */
	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
	}

	/**  
	 * 获取返回的数据  
	 * @return data 返回的数据  
	 */
	public Object getData() {
		return data;
	}

	/**
	 * 设置返回的数据  
	 *	@param data 返回的数据  
	 */
	public void setData(Object data) {
		this.data = data;
	}
	
	
 
	
	
}
